package com.yonyou.cyxdms.sysAuth.service.dto;

import com.yonyou.cyx.function.utils.bean.BeanMapperUtil;
import com.yonyou.cyxdms.framework.bean.dto.base.DMSBaseDTO;
import com.yonyou.cyx.framework.bean.entity.base.BasePO;
import java.io.Serializable;
import java.time.LocalDateTime;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.yonyou.cyx.function.utils.jsonserializer.localdatetime.JsonLocalDateTimeDeserializer;
import com.yonyou.cyx.function.utils.jsonserializer.localdatetime.JsonLocalDateTimeSerializer;


/**
 * <p>
 * 业务往来客户资料
 * </p>
 *
 * @author quankk
 * @since 2019-07-05
 */

public class PartCustomerDTO extends DMSBaseDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * PART_CUSTOMER_ID
     */
        private Integer partCustomerId;
        /**
     * 经销商代码
     */
        private String dealerCode;
        /**
     * 客户代码
     */
        private String customerCode;
        /**
     * 业务往来客户类型,关联tt_customer_basedata表的basedata_id
     */
        private Integer customerTypeCode;
        /**
     * 客户名称
     */
        private String customerName;
        /**
     * 客户拼音
     */
        private String customerSpell;
        /**
     * 客户简称
     */
        private String customerShortName;
        /**
     * 地址
     */
        private String address;
        /**
     * 邮编
     */
        private String zipCode;
        /**
     * 联系人
     */
        private String contactorName;
        /**
     * 联系人电话
     */
        private String contactorPhone;
        /**
     * 联系人手机
     */
        private String contactorMobile;
        /**
     * 传真
     */
        private String fax;
        /**
     * 价格系数
     */
        private Double priceRate;
        /**
     * 销售基价
     */
        private Integer salesBasePriceType;
        /**
     * 资料来源
     */
        private Integer dataSources;
        /**
     * 是否有效
     */
        private Integer isValid;
            private Integer organizationId;
        /**
     * 绋庣巼
     */
        private Double taxes;
        /**
     * 账户名
     */
        private String accountName;
        /**
     * 银行账号
     */
        private String account;
        /**
     * 开户行
     */
        private String bankName;
        /**
     * 第二账户名
     */
        private String accountNameSecond;
        /**
     * 第二银行账号
     */
        private String accountSecond;
        /**
     * 第二开户行
     */
        private String bankNameSecond;
        /**
     * 是否下发
     */
        private Integer isIssued;
        /**
     * 合同号
     */
        private String contractNumber;
        /**
     * 合同起始时间
     */
        @JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeSerializer.class)
    private LocalDateTime contractFrom;
        /**
     * 合同结束时间
     */
        @JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeSerializer.class)
    private LocalDateTime contractTo;
        /**
     * 预付金
     */
        private Double advanceMoney;
        /**
     * 可用预付金
     */
        private Double availableAdvanceMoney;
        /**
     * 锁定预付金
     */
        private Double lockAdvanceMoney;
        /**
     * 信用额度
     */
        private Double lineCredit;
        /**
     * 附件id
     */
        private Integer fileId;
        /**
     * 关联的经销商CODE（该业务往来客户是一个经销商）
     */
        private String associateDealerCode;
        /**
     * 关联的部门ID（该业务往来客户是一个部门）
     */
        private Integer associateDeptId;
        /**
     * 区域负责人
     */
        private String areaPrincipal;
        /**
     * 省
     */
        private String province;
        /**
     * 城市
     */
        private String city;
        /**
     * 区县
     */
        private String district;
        /**
     * QQ号
     */
        private String qq;
        /**
     * 业务往来客户等级 TM_PART_CUSTOMER_GRADE 主键：GRADE_ID
     */
        private Integer partCustomerGradeId;
            private Boolean isDeleted;
    
    public PartCustomerDTO() {
        super();
    }




    public Integer getPartCustomerId() {
        return partCustomerId;
    }


    public void setPartCustomerId(Integer partCustomerId) {
        this.partCustomerId = partCustomerId;
    }



    public String getDealerCode() {
        return dealerCode;
    }


    public void setDealerCode(String dealerCode) {
        this.dealerCode = dealerCode;
    }



    public String getCustomerCode() {
        return customerCode;
    }


    public void setCustomerCode(String customerCode) {
        this.customerCode = customerCode;
    }



    public Integer getCustomerTypeCode() {
        return customerTypeCode;
    }


    public void setCustomerTypeCode(Integer customerTypeCode) {
        this.customerTypeCode = customerTypeCode;
    }



    public String getCustomerName() {
        return customerName;
    }


    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }



    public String getCustomerSpell() {
        return customerSpell;
    }


    public void setCustomerSpell(String customerSpell) {
        this.customerSpell = customerSpell;
    }



    public String getCustomerShortName() {
        return customerShortName;
    }


    public void setCustomerShortName(String customerShortName) {
        this.customerShortName = customerShortName;
    }



    public String getAddress() {
        return address;
    }


    public void setAddress(String address) {
        this.address = address;
    }



    public String getZipCode() {
        return zipCode;
    }


    public void setZipCode(String zipCode) {
        this.zipCode = zipCode;
    }



    public String getContactorName() {
        return contactorName;
    }


    public void setContactorName(String contactorName) {
        this.contactorName = contactorName;
    }



    public String getContactorPhone() {
        return contactorPhone;
    }


    public void setContactorPhone(String contactorPhone) {
        this.contactorPhone = contactorPhone;
    }



    public String getContactorMobile() {
        return contactorMobile;
    }


    public void setContactorMobile(String contactorMobile) {
        this.contactorMobile = contactorMobile;
    }



    public String getFax() {
        return fax;
    }


    public void setFax(String fax) {
        this.fax = fax;
    }



    public Double getPriceRate() {
        return priceRate;
    }


    public void setPriceRate(Double priceRate) {
        this.priceRate = priceRate;
    }



    public Integer getSalesBasePriceType() {
        return salesBasePriceType;
    }


    public void setSalesBasePriceType(Integer salesBasePriceType) {
        this.salesBasePriceType = salesBasePriceType;
    }



    public Integer getDataSources() {
        return dataSources;
    }


    public void setDataSources(Integer dataSources) {
        this.dataSources = dataSources;
    }



    public Integer getIsValid() {
        return isValid;
    }


    public void setIsValid(Integer isValid) {
        this.isValid = isValid;
    }



    public Integer getOrganizationId() {
        return organizationId;
    }


    public void setOrganizationId(Integer organizationId) {
        this.organizationId = organizationId;
    }



    public Double getTaxes() {
        return taxes;
    }


    public void setTaxes(Double taxes) {
        this.taxes = taxes;
    }



    public String getAccountName() {
        return accountName;
    }


    public void setAccountName(String accountName) {
        this.accountName = accountName;
    }



    public String getAccount() {
        return account;
    }


    public void setAccount(String account) {
        this.account = account;
    }



    public String getBankName() {
        return bankName;
    }


    public void setBankName(String bankName) {
        this.bankName = bankName;
    }



    public String getAccountNameSecond() {
        return accountNameSecond;
    }


    public void setAccountNameSecond(String accountNameSecond) {
        this.accountNameSecond = accountNameSecond;
    }



    public String getAccountSecond() {
        return accountSecond;
    }


    public void setAccountSecond(String accountSecond) {
        this.accountSecond = accountSecond;
    }



    public String getBankNameSecond() {
        return bankNameSecond;
    }


    public void setBankNameSecond(String bankNameSecond) {
        this.bankNameSecond = bankNameSecond;
    }



    public Integer getIsIssued() {
        return isIssued;
    }


    public void setIsIssued(Integer isIssued) {
        this.isIssued = isIssued;
    }



    public String getContractNumber() {
        return contractNumber;
    }


    public void setContractNumber(String contractNumber) {
        this.contractNumber = contractNumber;
    }



    public LocalDateTime getContractFrom() {
        return contractFrom;
    }


    public void setContractFrom(LocalDateTime contractFrom) {
        this.contractFrom = contractFrom;
    }



    public LocalDateTime getContractTo() {
        return contractTo;
    }


    public void setContractTo(LocalDateTime contractTo) {
        this.contractTo = contractTo;
    }



    public Double getAdvanceMoney() {
        return advanceMoney;
    }


    public void setAdvanceMoney(Double advanceMoney) {
        this.advanceMoney = advanceMoney;
    }



    public Double getAvailableAdvanceMoney() {
        return availableAdvanceMoney;
    }


    public void setAvailableAdvanceMoney(Double availableAdvanceMoney) {
        this.availableAdvanceMoney = availableAdvanceMoney;
    }



    public Double getLockAdvanceMoney() {
        return lockAdvanceMoney;
    }


    public void setLockAdvanceMoney(Double lockAdvanceMoney) {
        this.lockAdvanceMoney = lockAdvanceMoney;
    }



    public Double getLineCredit() {
        return lineCredit;
    }


    public void setLineCredit(Double lineCredit) {
        this.lineCredit = lineCredit;
    }



    public Integer getFileId() {
        return fileId;
    }


    public void setFileId(Integer fileId) {
        this.fileId = fileId;
    }



    public String getAssociateDealerCode() {
        return associateDealerCode;
    }


    public void setAssociateDealerCode(String associateDealerCode) {
        this.associateDealerCode = associateDealerCode;
    }



    public Integer getAssociateDeptId() {
        return associateDeptId;
    }


    public void setAssociateDeptId(Integer associateDeptId) {
        this.associateDeptId = associateDeptId;
    }



    public String getAreaPrincipal() {
        return areaPrincipal;
    }


    public void setAreaPrincipal(String areaPrincipal) {
        this.areaPrincipal = areaPrincipal;
    }



    public String getProvince() {
        return province;
    }


    public void setProvince(String province) {
        this.province = province;
    }



    public String getCity() {
        return city;
    }


    public void setCity(String city) {
        this.city = city;
    }



    public String getDistrict() {
        return district;
    }


    public void setDistrict(String district) {
        this.district = district;
    }



    public String getQq() {
        return qq;
    }


    public void setQq(String qq) {
        this.qq = qq;
    }



    public Integer getPartCustomerGradeId() {
        return partCustomerGradeId;
    }


    public void setPartCustomerGradeId(Integer partCustomerGradeId) {
        this.partCustomerGradeId = partCustomerGradeId;
    }



    public Boolean getDeleted() {
        return isDeleted;
    }


    public void setDeleted(Boolean isDeleted) {
        this.isDeleted = isDeleted;
    }



    @Override
    public String toString() {
        return "PartCustomerDTO{" +
        "partCustomerId=" + partCustomerId +
        ", dealerCode=" + dealerCode +
        ", customerCode=" + customerCode +
        ", customerTypeCode=" + customerTypeCode +
        ", customerName=" + customerName +
        ", customerSpell=" + customerSpell +
        ", customerShortName=" + customerShortName +
        ", address=" + address +
        ", zipCode=" + zipCode +
        ", contactorName=" + contactorName +
        ", contactorPhone=" + contactorPhone +
        ", contactorMobile=" + contactorMobile +
        ", fax=" + fax +
        ", priceRate=" + priceRate +
        ", salesBasePriceType=" + salesBasePriceType +
        ", dataSources=" + dataSources +
        ", isValid=" + isValid +
        ", organizationId=" + organizationId +
        ", taxes=" + taxes +
        ", accountName=" + accountName +
        ", account=" + account +
        ", bankName=" + bankName +
        ", accountNameSecond=" + accountNameSecond +
        ", accountSecond=" + accountSecond +
        ", bankNameSecond=" + bankNameSecond +
        ", isIssued=" + isIssued +
        ", contractNumber=" + contractNumber +
        ", contractFrom=" + contractFrom +
        ", contractTo=" + contractTo +
        ", advanceMoney=" + advanceMoney +
        ", availableAdvanceMoney=" + availableAdvanceMoney +
        ", lockAdvanceMoney=" + lockAdvanceMoney +
        ", lineCredit=" + lineCredit +
        ", fileId=" + fileId +
        ", associateDealerCode=" + associateDealerCode +
        ", associateDeptId=" + associateDeptId +
        ", areaPrincipal=" + areaPrincipal +
        ", province=" + province +
        ", city=" + city +
        ", district=" + district +
        ", qq=" + qq +
        ", partCustomerGradeId=" + partCustomerGradeId +
        ", isDeleted=" + isDeleted +
        "}";
    }
    /**
     * 将DTO 转换为PO
     * //对某个对象属性进行赋值
     * //BeanMapperUtil.populateValueByMethod(transPO,"setXxx",this.getXxx);
     * @param poClass dto 需要转换的dto
     * @author quankk
     * @since 2018/7/22 0022
     */
    @Override
    public <T extends BasePO> T transDtoToPo(Class<T> poClass) {
        return super.transDtoToPo(poClass);
    }

    /**
     * 将DTO 转换为PO
     * BeanMapperUtil.populateValueByMethod(transPO,"setXxx",this.getXxx);
     * @param po 需要转换的对象
     * @author quankk
     * @since 2018/7/22 0022
     */
    public <T extends BasePO> void transDtoToPo(T po) {
        BeanMapperUtil.copyProperties(this, po, "partCustomerId");
    }

}
